package com.cx330;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Iterator;

public class Example69 {
    @Test
    public void test1() {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.remove(Integer.valueOf(2)); // 删除元素2
        list.remove(0); // 删除索引[0]位置的元素
        System.out.println(list);
    }

    @Test
    public void test2() {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(3);
        list.add(4);
        list.removeIf(num -> num % 2 == 0); // 根据条件删除元素
        System.out.println(list);
    }

    @Test
    public void test3() {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(3);
        list.add(4);
        Iterator<Integer> iterator = list.iterator();
        while (iterator.hasNext()) {
            Integer num = iterator.next();
            if (num % 2 == 0) {
                iterator.remove(); // 使用迭代器删除元素
            }
        }
        System.out.println(list);
    }

    @Test
    public void test4() {
        ArrayList<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(3);
        list.add(4);
        // 普通for循环删除元素
        for (int i = 0; i < list.size(); i++) {
            Integer num = list.get(i);
            if (num % 2 == 0) {
                list.remove(i);
            }
        }
        System.out.println(list);
    }

    @Test
    public void test5() {
        ArrayList<Integer> list = new ArrayList<>();;
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(3);
        list.add(4);
        // ConcurrentModificationException
        for (Integer num : list) {
            if (num % 2 == 0) {
                list.remove(num);
            }
        }
    }
}
